/**
 * @Description: 基于Egg Mysql数据库二次封装 集成mybatis
 * @author 焦政
 * @date 2019/4/5
 */
const Service = require('egg').Service;
// 引入mybatis模块
const mybatisMapper = require('mybatis-mapper');
// 封装数据处理Service层
class DBService extends Service {
  /**
   * @param namespace SQL语句存储路径
   * @param sql Mabatis 映射id
   * @param param 执行sql所需参数
   * @returns {数据结果}
   */
  async db(namespace, sql, param) {
    // 读取SQL映射文件
    const mapperName = './app/sqlmapper/' + namespace + '.xml';
    mybatisMapper.createMapper([mapperName]);
    const format = { language: 'sql', indent: '  ' };
    const query = mybatisMapper.getStatement(namespace.split('/').pop(), sql, param, format);
    // 通过Egg MySql插件执行填充好参数的sql语句 并返回结果
    return await this.app.mysql.query(query);
  }
}
module.exports = DBService;
